package main

import (
	"math"
	"sort"
)

// 按照题目的数据规模， 暴力破解肯定是超时的，那么就先排序。
func findMinDifference(timePoints []string) int {
	// 鸽巢原则： 总共的时间也就1000多种， 当timePoints 长度大于时， 一定有重复的，
	// 那么时间间隔就是 0
	if len(timePoints) > 1440 {
		return 0
	}
	// 排序
	sort.Strings(timePoints)
	// 开始比较
	minTime := math.MaxInt32
	num1 := exTime(timePoints[0])
	t0 := num1
	for i := 1; i < len(timePoints); i++ {
		num2 := exTime(timePoints[i])
		minTime = min(minTime, num2-num1)
		num1 = num2
	}
	// 判断首位的情况(相当于模运算)
	return min(minTime, t0+1440-num1)
}

// 将当前时间转化为分钟
func exTime(t string) int {
	// 转int
	return (int(t[0]-'0')*10+int(t[1]-'0'))*60 + int(t[3]-'0')*10 + int(t[4]-'0')
}

func min(a, b int) int {
	if a > b {
		return b
	}
	return a
}
